I can use the EAddMulti() function to add a multicast address to the node on
which the Ethernet driver is running only six times in succession. On the
seventh call, the function returns result code eMultiErr (-
91),
indicating that the table is full. I am attempting to add 64 unique, sequential
addresses to the table to allow reception of all multicast groups. My
understanding of the underlying hardware is that, with a 64-bit logical-address
filter, with all bits set, the hardware receives all multicast addresses on the
interface. Can this apparently arbitrary maximum number of six multicast
entries be modified (to 64), so I can "fill out" the hardware-multicast
logical-address filter?
A The number of addresses you can set up for multicast is limited. The
size of the limit depends on the driver you are dealing with (i.e., Apple,
Asante, etc). This limit is a function of the number of CAM locations the
Ethernet controller supports. Controllers with a SONIC chip support six CAM
locations, so with these controllers, the limit on multicast addresses is
six.
Q I need the ability to set the interface to "promiscuous" mode, where all (multicast and unicast) addresses are received.
A Our Ethernet driver does not support promiscuous mode. The only way to enable promiscuous mode is to write your own Ethernet driver to support promiscuous mode only. This is no easy task, in that you need to know about every network interface card that exists if you need to support them all.
There is also a performance issue with promiscuous mode, as it is very
interrupt-intensive. If you are on a busy network, promiscuous-mode operation
would require a very fast Macintosh.